JavaScript - Funções Globais

Funções Globais

As funções globais executam um cálculo ou processo e retornam o resultado diretamente a função chamadora.

Cuidado com o JavaScript porque ele não é lógico, ou seja, numa função faz uma coisa e em outra função quando se espera o mesmo funcionamento ele não, obrigatóriamente, faz a mesma coisa.

Exemplo1 :
eval(a + b) se a=2 e b=3 dá o resultado 5. Ambos os valores foram somados porque são numéricos.

Exemplo2 :
eval(a + b) se a='2' e b='3' ( strings ) dá o resultado '23', ou seja, somou os strings.

Na função isNaN a vírgula não faz parte de um número, ou seja, não aceita divisor de milhares do idioma inglês mas na função parseInt ele simplesmente ignora a vírgula e aceita o restante do valor.


A calculadora do JavaScript - Função eval()

eval - A função eval () avalia/calcula o código valor do string recebido como parâmetro. É uma verdadeira calculadora.
Podemos usar as 4 operações básicas (+-*\) até declarar funções que fazem calculos complexos. Contudo é necessário cautela ao solicitar a função eval. Veja campo Notas.
Uso : eval('2 + 2')

Abaixo seguemalgumas sugestões:

Expressão (Copie e cole)
eval-Resultado
2 + 3
5
'2 + 3'
2 + 3
5*9+5-4
46
var a=12;a+5
17
function soma(a,b){
   return a+b;
}
soma(20,35);
55
var a=12;a++
12
var a=12;++a
13


Exemplo de funcionamento:

Script utilizado no exemplo acima:
   <script>
       function CalcEval() {
        var x = document.getElementById("valorEval");
        try {
      var y = eval(x.value);
      x.value = y;
        }
        catch{
      alert("Dado inválido para eval");
        }
       }
   </script>

   Exemplo de funcionamento: <input type="text" id="valorEval" value="Digite aqui o valor(Cole)" />
   <input type="button" value="Clique aqui para calcular o eval do campo à esquerda" onclick="CalcEval();" />

Notas : Cuidado com o eval. Com ele podemos definir uma função que calcula algo e causar um loop infinito ou mesmo algo com intenções maliciosas. Critique os argumentos especialmente quando são digitados por um usuário. Você pode manter o argumento do eval em uma linha simples, não aceite CRLF ou não aceitando o ponto e vírgula no campo digitado pelo usuário, por exemplo.


isFinite() - Determina se o valor passado é um número finito.
Se necessário, o parâmetro é primeiro convertido em um número.
Uso : if (isFinite(1000 / x)) {}
Sugestões abaixo:

Expressão (Copie e cole)
isFinite-Resultado
var x=5;1000/x
false
1000
true
1000.07
true
1000,07
true


Exemplo de funcionamento:

Nota :
1-Como argumento o isFinite só aceita números.
2-Esta função retorna true se o número é finito, ou seja, está dentro do range de números do JavaScript e false se não estiver.
3-JavaScript utiliza o idioma ingles para representação numérica.
   Portanto, o ponto decimal inglês equivale a vírgula decimal brasileira.
   A vírgula é o separador de milhares da lingua inglesa, por esse motivo dá true no isFinte(1000,07).

Script utilizado no exemplo acima:
   <script>
       function CalcisFinite() {
        var x = document.getElementById("valorisFinite");
        try {
      var y = isFinite(x.value);
      x.value = y;
        }
        catch{
      alert("Dado inválido para isFinite");
        }
       }
   </script>
   Exemplo de funcionamento: <input type="text" id="valorisFinite" value="Digite aqui o valor(Cole)" />
   <input type="button" value="Clique aqui para calcular o isFinite do campo à esquerda" onclick="CalcisFinite();" />


isNaN() - Determina se um valor NÃO é um número válido (NaN) ou não.
Retorna true se o dado NÃO for um número válido para o JavaScript.
Uso : if (isNaN(x)) {}
Sugestões abaixo:

Expressão (Copie e cole)
isNAN-Resultado
1000
false
1000.0987
false
1000,876
true
Jose
true


Exemplo de funcionamento:

Nota:
1-Como argumento o isNaN retorna true se NÃO for um número válido para o JavaScript e false se for.
2-JavaScript utiliza o idioma ingles para representação numérica.
   Portanto, o ponto decimal inglês equivale a vírgula decimal brasileira.
   Diferentemente do isFinite, a vírgula NÃO é o aceito como separador de milhares (padrão da lingua inglesa), por esse motivo dá true no isNaN(1000,07).
3-O fato do JavaScript converter automaticamente valores de tipo (chamado de coerção) pode provocar erros de interpretação. Sugerimos usar como alternativa Number.isNaN (), conforme definido no ECMAScript 2015.

Script utilizado no exemplo acima:
   <script>
       function CalcisNaN() {
        var x = document.getElementById("valorisNaN");
        try {
      var y = isNaN(x.value);
      x.value = y;
        }
        catch{
      alert("Dado inválido para isNaN");
        }
       }
   </script>
   Exemplo de funcionamento: <input type="text" id="valorisNaN" value="Digite aqui o valor(Cole)" />
   <input type="button" value="Clique aqui para calcular o isNaN do campo à esquerda" onclick="CalcisNaN();" />


parseFloat() - Esta função tenta converter o dado recebido para um Número decimal com ponto flutuante. Para isto a função parseFloat() analisa um argumento (convertendo-o em uma string primeiro, se necessário) e retorna um número formatado no estilo ponto flutuante do JavaScript.
Uso : return parseFloat(raio) * 2.0 * Math.PI; //diâmetro de uma circunferência
Sugestões abaixo:

Expressão (Copie e cole)
parseFloat-Resultado
1000
1000
1234.56
1234.56
1234,56
1234
Jose
NaN
var x=5;1000/x
NaN
123E5
12300000


Exemplo de funcionamento:

Notas :
Na conversão o string de entrada só pode ter :
   1-Sinais + e -
   2-ponto decimal.
   3-dígitos numéricos de 0 a 9.
   4-expoente numérico (por exemplo ^10E4).
   5-Espaços a direita ou a esquerda do string.
   6-Qualquer coisa diferente disso retorna NaN.
   7-Caso o valor a ser retornado estoure a escala de valores do JavaScript será retornado -Infinity ou +Infinity.

Script utilizado no exemplo acima:
        <script>
          function CalcparseFloat() {
           var x = document.getElementById("valorparseFloat");
           try {
            var y = parseFloat(x.value);
            x.value = y;
           }
           catch{
            alert("Dado inválido para parseFloat");
           }
          }
      </script>
      Exemplo de funcionamento: <input type="text" id="valorparseFloat" value="Digite aqui o valor(Cole)" />
      <input type="button" value="Clique aqui para calcular o parseFloat do campo à esquerda" onclick="CalcparseFloat();" />
     


parseInt() - Esta função tenta converter o parâmetro recebido para um número inteiro.
Esta função também é muito utilizada para conversão de base numérica, como é o caso da cor(Hexadecimal).
Para isto a função parseInt () analisa um argumento de string e retorna um inteiro no sistema numérico especificado (hexa, binário, octal, decimal).
Uso : return parseInt(dado)
Sugestões abaixo:

Expressão (Copie e cole)
parseInt-Resultado
1000
1000
123.45
123
123,45
123
123,xyz
123
xyz.123
NaN
123E2
123


Exemplo de funcionamento:

Nota : Segue as mesmas regras do parseFloat.

Script utilizado no exemplo acima:
   <script>
       function CalcparseInt() {
        var x = document.getElementById("valorparseInt");
        try {
      var y = parseInt(x.value);
      x.value = y;
        }
        catch{
      alert("Dado inválido para parseInt");
        }
       }
   </script>
   Exemplo de funcionamento: <input type="text" id="valorparseInt" value="Digite aqui o valor(Cole)" />
   <input type="button" value="Clique aqui para calcular o parseparseInt do campo à esquerda" onclick="CalcparseInt();" />

Utilizando a função parseInt para conversão de base numérica.

Esta funcionalidade é muito útil para converter um número que esta numa base numérica diferente da decimal para convertê-la para decimal

Sugestões abaixo:
Número (Copie e cole)
Base
Resultado-Decimal
100
16
256
123
8
83
1010
2
10


Exemplo de funcionamento:
Digite o Numero a ser convertido :
O resultado será colocado aqui novamente.
Digite a base numérica :
 
Clique aqui para calcular:
 


Script utilizado no exemplo acima:


           <script>
                function MudaBase() {
                    var num = document.getElementById("valorparseInt2");
                    var base = document.getElementById("valorparseIntBase");
                    const parsed = parseInt(num.value, base.value);
                    if (isNaN(parsed)) { return 0; }
                    //return parsed;
                    num.value = parsed;
                }
            </script>
            <br /><br />

            Exemplo de funcionamento: <br />

            <div class="row" style="background-color:lightgreen;">
                <div class="col" colspan="4" >Digite o Numero a ser convertido :</div>
                <div class="col" colspan="4" >
                    <input type="text" id="valorparseInt2" value="(Cole1)" />
                </div>
                <div class="col" colspan="4">O resultado será colocado aqui novamente.</div>
            </div>

            <div class="row" style="background-color:lightgreen;">
                <div class="col" colspan="4" >Digite a base numérica :</div>
                <div class="col" colspan="4" >
                    <input type="text" id="valorparseIntBase" value="de 2 a 36 - Cole" />
                </div>
                <div class="col" colspan="4" > </div>
            </div>

            <div class="row" style="background-color:lightgreen;">
                <div class="col" colspan="4" >Clique aqui para calcular:</div>
                <div class="col" colspan="4" >
                    <input type="button" value="Clique aqui para Fazer a mudança de base com os dados dos campos acima" onclick="MudaBase();" />
                </div>
                <div class="col" colspan="4" > </div>
            </div>

Notas :
1-Na função se não foi possível converter o número a função irá retornar zero.
2-A base numérica do número pode ser qualquer número de 2 a 36.

Explicando os resultados :
Nota : se a base do número é x a posição de cada dígito tem como peso a potencia da base.
Explicando melhor : 123 é o número 1 * 100(10^2) + 2 * 10(10^1) + 3 * 1(10^1).
Somando 1 * 100 + 2 * 10 + 3 * 1 temos 100 + 20 + 3 = 123
Se a base for hexadecimal cada posição representará uma potencia de 16, como descrevo abaixo.


Exemplo 1 : convertendo 100 na base hexadecimal(16) para decimal que deu o resultado 256.
   Cálculo : 1 * 16^2(256) + 0 * 16^1(16) + 0 * 16^0(1) = 256 + 0 + 0 =256

Exemplo 2 : convertendo 123 na base hexadecimal(8) para decimal que deu o resultado 83.
   Cálculo : 1 * 8^2(64) + 2 * 8^1(8) + 3 * 8^0(1) = 64 + 16 + 3 =83

Exemplo 3 : convertendo 1010 na base binário(2) para decimal que deu o resultado 10.
   Cálculo : 1 * 2^3(8) + 0 * 2^2(4) + 1 * 2^1(2) + 0 * 2^0(1) = 8 + 0 + 2 = 10



encodeURI() - A função encodeURI () codifica um URI substituindo os caracteres que não podem ser seguramente enviados numa URI ou URL por uma, duas, três ou quatro sequências de escape que representam a codificação UTF-8 do caractere evitando a interpretação dos mesmos pelo browser.
O caso mais comum é quando esta função troca o espaço por 0x20 mas qualquer caractere que possa ser interpretado pelo HTML, CSS será substituido pelo seu código UTF-8.
Uso : Veja o item 053-EncodeURI.html deste assunto.


decodeURI() - É a função contrária a função encodeURI ().
A função decodeURI () decodifica um Uniform Resource Identifier (URI) criado anteriormente por encodeURI () ou por uma processo semelhante.
Uso : Veja o item 053-EncodeURI.html deste assunto.